/*----------------------------------------------------------------------------
Owner(s): Shane Whitfield
$Copyright: $
$Id: 

Purpose  : Basic game object
----------------------------------------------------------------------------*/

#pragma once

#include "go_mobiles.h"


class CGoEnemy : public CGoMobile
{
	typedef CGoMobile super;

public:
	
			CGoEnemy(){}
			
	virtual bool	IsEnemy() const {
						return true; }
			
private:

};

/*--------------------------------------------------------------------------*/
//  Class CGoHealStation declaration.
class CGoSwarmer : public CGoEnemy
{
	typedef CGoEnemy super;

public:

					CGoSwarmer();
					
	//CGo Overrides
	virtual EClass	GetClass() {
						return EClass_Swarmer;}
	virtual void	Render();

	//CGoTargeter Overrides
	virtual void	Update();
	
protected:

	//CGoMobile Overrides
	virtual bool		shouldBeMoving() const {
							return true; }
	void				UpdateVelocityToCircleTarget();
	void				UpdateVelocityToHeadToTarget();
						
	//CGoTargeter Overrides
	virtual CGo*	findTarget();

private:

	enum EState
	{
		EState_SettingUp,
		EState_HeadingToCenter,
		EState_WaitingForRange,
		EState_Attacking,
		EState_RechargingAttack,
		EState_TargetSearch
	};
	
	void	setState(EState i_state);
	void	logState();

	float	m_dps;
	float	m_tState;
	EState	m_state;
	float	m_attackRange;
	float	m_dtAttack;
	float	m_dtAttackCharge;
	CGo*	m_target;
};

/*-----------------------------------EOF!-----------------------------------*/
